package com.qst.order.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 补货记录实体类（对应 t_replenish_record 表）
 */
@Data
@TableName("t_replenish_record")
public class ReplenishRecord {

    /**
     * 补货记录ID（主键，自增）
     */
    @TableId(value = "replenish_id", type = IdType.AUTO)
    private Integer replenishId;


    /**
     * 商品ID（关联 t_product.product_id）
     */
    @TableField("product_id")
    private Integer productId;

    /**
     * 批量补货批次号（同一批补货共享同一个批次号，单个补货为null）
     */
    @TableField("batch_id")
    private String batchId;

    /**
     * 补货前库存
     */
    @TableField("pre_stock")
    private Integer preStock;

    /**
     * 补货数量
     */
    @TableField("replenish_quantity")
    private Integer replenishQuantity;

    /**
     * 补货后库存（pre_stock + replenish_quantity）
     */
    @TableField("after_stock")
    private Integer afterStock;

    /**
     * 补货原因（如：库存预警、活动备货）
     */
    @TableField("replenish_reason")
    private String replenishReason;

    /**
     * 补货方式（如：采购入库、调拨入库）
     */
    @TableField("replenish_method")
    private String replenishMethod;

    /**
     * 补货备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 操作人员ID（关联 t_user.user_id）相当于商家id
     */
    @TableField("operate_user_id")
    private Integer operateUserId;

    /**
     * 操作人员姓名（冗余存储）
     */
    @TableField("operate_user_name")
    private String operateUserName;

    /**
     * 补货状态（1：完成，0：异常）
     */
    @TableField("replenish_status")
    private Integer replenishStatus;

    /**
     * 补货时间（创建时间）
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间（自动更新）
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 逻辑删除标记（0：未删除，1：已删除）- 可选，根据业务是否需要删除记录
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}